package xML;

import javax.swing.*;

import noyau.Question;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

/**
 * 
 * @author Pasukaru
 * Class CreationQuestion
 * Permet d'ajouter une question dans un test, celle-ci sera enregistrée 
 * dans le fichier xML
 * 
 */
public class CreationQuestion extends JFrame {

	private XMLCreation x;
	
	/**
	 * Methode de création de question (constructeur)
	 * Creer une question dans le test passé en paramètre par le menu d'options
	 * @param le nom du test dans lequel on veut insérer la question
	 */
    public CreationQuestion(final String test){
  		// Mise en place du layout
  		GridLayout layout = new GridLayout(7,2);
  		this.setLayout(layout);
  		// Obtention du Panel
  		Container contentPane = ((JFrame) this).getContentPane();
  		// Creation des composants
  		 JLabel labelIntitule=new JLabel("Intitulé de la question : ");
	        final JTextField intitule =new JTextField();
	        // On écrit les quatres propositions de réponse
	        JLabel reponseA = new JLabel("reponse A :");
	        final JTextField A =new JTextField();
	        JLabel reponseB = new JLabel("reponse B :");
	        final JTextField B =new JTextField();
	        JLabel reponseC = new JLabel("reponse C :");
	        final JTextField C =new JTextField();
	        JLabel reponseD = new JLabel("reponse D :");
	        final JTextField D =new JTextField();
	        // On renseigne la bonne réponse
	        JLabel Bonnereponse = new JLabel("La bonne reponse est :");
	        final JTextField rep =new JTextField();
	        JButton valider = new JButton("Valider");
  		// Ajoute les composants au panel
	        contentPane.add(labelIntitule);contentPane.add(intitule);
	        contentPane.add(reponseA);contentPane.add(A);
	        contentPane.add(reponseB);contentPane.add(B);
	        contentPane.add(reponseC);contentPane.add(C);
	        contentPane.add(reponseD);contentPane.add(D);
	        contentPane.add(Bonnereponse);contentPane.add(rep);
	        contentPane.add(valider);
  		// Redimension et affichage de la fenêtre
  		this.pack();
  		this.setVisible(true);      
  		// AJout de l'écouteur pour le click sur bouton
		valider.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				int correction =-1;
				if(intitule.getText().equals("") || A.getText().equals("") || B.getText().equals("") || 
						C.getText().equals("") || D.getText().equals("") || rep.getText().equals(""))
					 popup("Veuillez renseigner tous les champs !");
				else {
					if(!(rep.getText().equals("A")) && !(rep.getText().equals("B")) && 
							!(rep.getText().equals("C")) && !(rep.getText().equals("D")))
						popup("La bonne réponse doit être A,B,C ou D !");
					else{ 
						// On associe l'int correspondant a la bonne réponse
						if(rep.getText().equals("A")) correction = 0;
						if(rep.getText().equals("B")) correction = 1;
						if(rep.getText().equals("C")) correction = 2;
						if(rep.getText().equals("D")) correction = 3;
						// On crée la question avec les données renseignées
						Question q = new Question (intitule.getText(),A.getText(),B.getText(),C.getText(),D.getText(),correction);
				
							// On sauvegarde la question dans le fichier xML
				
							x=new XMLCreation();
							try {
								if(x.charger()){
									popup("La question a bien été créé !");
									x.sauvegarder(q, test);
								}
							} catch (Exception e) {
								e.printStackTrace();
							}
						
							// On affiche un message de validation
							JOptionPane.showOptionDialog(null, "La question a bien été ajoutée", null,JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,null, null, null);
							// On remet les champs à zéro
							intitule.setText("");
							A.setText("");
							B.setText("");
							C.setText("");
							D.setText("");
							rep.setText("");

					}
				}
			}	
		});
    }
    
 	private static void popup(String message){
  		JOptionPane.showOptionDialog(null, message, null,JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,null, null, null);
  	}
    


}